package com.fate.system.service;

import com.fate.system.entity.QuartzJob;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fate.system.dto.quartzjob.QuartzJobPageDTO;
import org.quartz.SchedulerException;

import java.util.List;

/**
 * @author 47349
 * @description 针对表【sys_quartz_job(定时任务)】的数据库操作Service
 * @createDate 2024-08-18 23:56:12
 */
public interface IQuartzJobService extends IService<QuartzJob> {

  /**
   * 分页获取列表
   *
   * @param pageDTO
   * @return
   */
  Page<QuartzJob> getPageList(QuartzJobPageDTO pageDTO);

  /**
   * 保存定时任务
   *
   * @param quartzJob 定时任务对象
   */
  void saveAndScheduleJob(QuartzJob quartzJob);

  /**
   * 编辑&启停定时任务
   *
   * @param quartzJob 定时任务对象
   */
  void editAndScheduleJob(QuartzJob quartzJob) throws SchedulerException;

  /**
   * 删除定时任务
   *
   * @param quartzJob 定时任务
   */
  void deleteAndStopJob(QuartzJob quartzJob);

  /**
   * 恢复定时任务
   *
   * @param quartzJob 定时任务
   */
  void resumeJob(QuartzJob quartzJob);

  /**
   * 获取需要执行的任务
   *
   * @return 任务列表
   */
  List<QuartzJob> getRunJobList();
}
